package materials.result;

import java.util.Set;

import materials.data.NeuronDataOutputMaterial;


/**
 * A Material which references a Set of NeuronDataOutputMaterial to a LayerID 
 * @author Sheepy
 */
public interface NetworkResultInterface {

	/**
	 * Adds a Set of DataOutputMaterial referenced to an ID which mean the Layer
	 * @param lastoutput Set of DataOutputMaterial
	 * @param id ID of the Layer the ResultSet should be Referenced to
	 * @require lastoutput != null
	 * @require id > 0
	 * @ensure _list.contains(lastoutput) == true
	 */
	public void add(Set<NeuronDataOutputMaterial> lastoutput, int id);

	/**
	 * Returns a printable String of the NetworkResult
	 * @return String[] - Each Entry of the Array contains the whole Information of one Layer
	 */
	public String[] getPrintable();

	/**
	 * Returns a Specific Set of OutputMaterial to a Layer
	 * @require i > 0
	 * @param int ID of the Layer which the Set is referenced by
	 * @return Set<NeuronDataOutputMaterial> - A Set of NeuronDataOutputMaterial of the Layer
	 */
	public Set<NeuronDataOutputMaterial> getLayerResult(int i);

	/**
	 * Returns a Result by the NeuronID
	 * @param id ID of the Material the Output should be given to
	 * @require id > 0
	 * @return double - Result referenced to a NeuronID
	 */
	public double getResultByID(int id);
	
	/**
	 * Returns, how many Set's of NeuronDataOutputMaterial are in the NetworkResult
	 * @return int - Numbers of the Sets
	 */
	public int getSize();
	
}
